WORST_CASE(?,O(n^2)) Solution: --------- "0" :: [] -(0)-> "A"(3, 3) "0" :: [] -(0)-> "A"(6, 3) "0" :: [] -(0)-> "A"(15, 15) "a__add" :: ["A"(3, 3) x "A"(6, 3)] -(4)-> "A"(3, 3) "a__from" :: ["A"(6, 3)] -(5)-> "A"(3, 3) "a__fst" :: ["A"(3, 3) x "A"(6, 3)] -(4)-> "A"(3, 3) "a__len" :: ["A"(3, 3)] -(5)-> "A"(3, 3) "add" :: ["A"(6, 3) x "A"(9, 3)] -(6)-> "A"(6, 3) "add" :: ["A"(0, 0) x "A"(0, 0)] -(0)-> "A"(0, 0) "add" :: ["A"(3, 3) x "A"(6, 3)] -(3)-> "A"(3, 3) "cons" :: ["A"(6, 3) x "A"(0, 0)] -(6)-> "A"(6, 3) "cons" :: ["A"(3, 3) x "A"(0, 0)] -(3)-> "A"(3, 3) "from" :: ["A"(9, 3)] -(6)-> "A"(6, 3) "from" :: ["A"(0, 0)] -(0)-> "A"(0, 0) "from" :: ["A"(6, 3)] -(3)-> "A"(3, 3) "fst" :: ["A"(6, 3) x "A"(9, 3)] -(6)-> "A"(6, 3) "fst" :: ["A"(0, 0) x "A"(0, 0)] -(0)-> "A"(0, 0) "fst" :: ["A"(3, 3) x "A"(6, 3)] -(3)-> "A"(3, 3) "len" :: ["A"(6, 3)] -(6)-> "A"(6, 3) "len" :: ["A"(0, 0)] -(0)-> "A"(0, 0) "len" :: ["A"(3, 3)] -(3)-> "A"(3, 3) "mark" :: ["A"(6, 3)] -(1)-> "A"(3, 3) "nil" :: [] -(0)-> "A"(3, 3) "nil" :: [] -(0)-> "A"(6, 3) "nil" :: [] -(0)-> "A"(3, 15) "nil" :: [] -(0)-> "A"(15, 15) "s" :: ["A"(0, 0)] -(0)-> "A"(3, 3) "s" :: ["A"(0, 0)] -(0)-> "A"(6, 3) "s" :: ["A"(0, 0)] -(0)-> "A"(0, 0) "s" :: ["A"(0, 0)] -(0)-> "A"(9, 7) "s" :: ["A"(0, 0)] -(0)-> "A"(3, 8) "s" :: ["A"(0, 0)] -(0)-> "A"(11, 11) Cost Free Signatures: --------------------- "0" :: [] -(0)-> "A"_cf(0, 0) "0" :: [] -(0)-> "A"_cf(3, 0) "0" :: [] -(0)-> "A"_cf(8, 8) "0" :: [] -(0)-> "A"_cf(15, 12) "0" :: [] -(0)-> "A"_cf(7, 0) "0" :: [] -(0)-> "A"_cf(15, 0) "0" :: [] -(0)-> "A"_cf(8, 0) "a__add" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "a__add" :: ["A"_cf(3, 0) x "A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "a__from" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "a__from" :: ["A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "a__fst" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "a__fst" :: ["A"_cf(3, 0) x "A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "a__len" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "a__len" :: ["A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "add" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "add" :: ["A"_cf(3, 0) x "A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "cons" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "cons" :: ["A"_cf(3, 0) x "A"_cf(0, 0)] -(3)-> "A"_cf(3, 0) "from" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "from" :: ["A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "fst" :: ["A"_cf(0, 0) x "A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "fst" :: ["A"_cf(3, 0) x "A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "len" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "len" :: ["A"_cf(3, 0)] -(3)-> "A"_cf(3, 0) "mark" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "mark" :: ["A"_cf(3, 0)] -(0)-> "A"_cf(3, 0) "nil" :: [] -(0)-> "A"_cf(0, 0) "nil" :: [] -(0)-> "A"_cf(3, 0) "nil" :: [] -(0)-> "A"_cf(12, 12) "nil" :: [] -(0)-> "A"_cf(8, 1) "nil" :: [] -(0)-> "A"_cf(14, 0) "nil" :: [] -(0)-> "A"_cf(15, 5) "nil" :: [] -(0)-> "A"_cf(9, 0) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 0) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(3, 0) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(0, 1) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(10, 8) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(12, 14) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(4, 0) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(5, 1) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(9, 8) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(11, 9) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(8, 0) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(14, 12) "s" :: ["A"_cf(0, 0)] -(0)-> "A"_cf(10, 6) Base Constructors: ------------------ "\"0\"_A" :: [] -(0)-> "A"(1, 0) "\"0\"_A" :: [] -(0)-> "A"(0, 1) "\"add\"_A" :: ["A"(1, 0) x "A"(1, 0)] -(1)-> "A"(1, 0) "\"add\"_A" :: ["A"(0, 1) x "A"(1, 1)] -(0)-> "A"(0, 1) "\"cons\"_A" :: ["A"(1, 0) x "A"(0, 0)] -(1)-> "A"(1, 0) "\"cons\"_A" :: ["A"(0, 1) x "A"(0, 0)] -(0)-> "A"(0, 1) "\"from\"_A" :: ["A"(1, 0)] -(1)-> "A"(1, 0) "\"from\"_A" :: ["A"(1, 1)] -(0)-> "A"(0, 1) "\"fst\"_A" :: ["A"(1, 0) x "A"(1, 0)] -(1)-> "A"(1, 0) "\"fst\"_A" :: ["A"(0, 1) x "A"(1, 1)] -(0)-> "A"(0, 1) "\"len\"_A" :: ["A"(1, 0)] -(1)-> "A"(1, 0) "\"len\"_A" :: ["A"(0, 1)] -(0)-> "A"(0, 1) "\"nil\"_A" :: [] -(0)-> "A"(1, 0) "\"nil\"_A" :: [] -(0)-> "A"(0, 1) "\"s\"_A" :: ["A"(0, 0)] -(0)-> "A"(1, 0) "\"s\"_A" :: ["A"(0, 0)] -(0)-> "A"(0, 1)